home *** CD-ROM | disk | FTP | other *** search
/ PC Graphics Unleashed / PC Graphics Unleashed.iso / ch08 / mousetst.c < prev    next >
C/C++ Source or Header  |  1994-09-15  |  2KB  |  88 lines

  1. // MOUSETST.C     - NOTE: This file was slightly modified.
  2. // left button turns cursor ON and OFF
  3. // right button end program
  4.  
  5. #include <conio.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <dos.h>
  9.  
  10. #define LMB 1
  11. #define RMB 2
  12.  
  13. int IsMouse(void);
  14. int MouseClick(void);
  15. void MouseXY(int *xpos,int *ypos);
  16. void MouseShow(int YesNo);
  17.  
  18. union REGS inregs;
  19. union REGS outregs;
  20.  
  21. void main() {
  22.   int xpos, ypos, xold=0, yold=0, btn, flag=1;
  23.  
  24.   clrscr();
  25.   btn = IsMouse();
  26.   if(!btn) {
  27.       printf("Mouse Driver Not Installed!\n");
  28.       exit(1);
  29.   }
  30.   gotoxy(1,1);
  31.   printf("There are %d buttons on this mouse",btn);
  32.   //getch();
  33.   //clrscr();
  34.   MouseShow(flag);
  35.   do {
  36.     MouseXY(&xpos,&ypos);
  37.     if ((xold != xpos) || (yold != ypos)) {
  38.        gotoxy(1,2);
  39.        printf("x = %d   y = %d       ",xpos,ypos);
  40.     }
  41.     xold = xpos;
  42.     yold = ypos;
  43.     btn = MouseClick();
  44.     if (btn == LMB) {
  45.        if (flag) flag = 0;
  46.        else flag = 1;
  47.        MouseShow(flag);
  48.     }
  49.   }while(btn != RMB);
  50.  
  51. }
  52.  
  53.  
  54. int IsMouse(void)
  55. {
  56.    inregs.x.ax = 0;
  57.    int86(0x33,&inregs,&outregs);
  58.    return(outregs.x.ax ? outregs.x.bx : 0);
  59. }
  60.  
  61. int MouseClick(void)
  62. {
  63.    int click = 0;
  64.    inregs.x.ax = 5;
  65.    inregs.x.bx = 1;
  66.    int86(0x33,&inregs,&outregs);
  67.    click = outregs.x.bx << 1;
  68.    inregs.x.bx--;
  69.    int86(0x33,&inregs,&outregs);
  70.    return(click | outregs.x.bx);
  71. }
  72.  
  73. void MouseXY(int *xpos,int *ypos)
  74. {
  75.    inregs.x.ax = 3;
  76.    int86(0x33,&inregs,&outregs);
  77.    *xpos = outregs.x.cx;
  78.    *ypos = outregs.x.dx;
  79. }
  80.  
  81.  
  82. void MouseShow(int YesNo)
  83. {
  84.    if (YesNo) inregs.x.ax = 1;
  85.    else inregs.x.ax = 2;
  86.    int86(0x33,&inregs,&outregs);
  87. }
  88.